<!DOCTYPE html>
<html lang="en">


<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../react18/react.development.js"></script>
  <script src="../react18/react-dom.development.js"></script>
  <script src="../react18/babel.min.js"></script>
  <script src="../react18/prop-types.js"></script>
</head>

<body>
  <div id="app"></div>
  <script type="text/babel">
     // 函数柯里化
      // 请封装一个函数,可以按照以下调用的方式进行求和
      //         - add(1,2,3)
      //         - add(1,2)(3)
      //         - add(1)(2,3)
      //         - add(1)(2)(3)
      //         - add(1,2)(2,2)(3,2)....
      // function add(...arg){
      //   let num=0
      //   // 第一次调用add计算传入参数的和
      //   num=arg.reduce((p,c)=>p+c,0)
      //   // 第二次或多次调用的时候计算传入参数和上一次计算的和
      //     const temp=(...arg)=>{
      //       num=arg.reduce((p,c)=>p+c,num)
      //       return temp
      //     }
      //   // 调用toString的时候说明计算借宿了返回num
      //     temp.toString=function(){
      //       return num
      //     }
      //   return temp
      //   }
      // alert(add(1,2))
    

        // function add(...arg){
        //   let num=0
        // // 第一次调用reduce求和
        // num=arg.reduce((p,c)=>p+c,0)
        // // 如果多次调用需要return一个函数多次调用求和,因为alert函数在运算结束后会调用字符串方法，所以可以在调用to String的时候把num return出去
        // const sum=(...arg)=>{
        // num= arg.reduce((p,c)=>p+c,num)
        // return sum
        // }
        // sum.toString = function(){
        //   return num
        // }

        // return sum
        // }

        // alert(add(1)(2)(3)(24))

          function add(...arg){
            let num=0
            num=arg.reduce((p,c)=>p+c,0)

          let sum=function(...arg){
            // 把多次求和的结果累加
            num=arg.reduce((p,c)=>p+c,num)
             return sum
          }
          // 调用结束会调用这个方法
          sum.toString=function(){
            return num
          }
          return sum

          }


          alert(add(2,4)(6,8)(4,5))






 </script>

</body>

</html>